# 题目: 704. 二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

# 题解: 二分查找

原数组已经是升序序列, 所以直接二分, target 与 nums[i] 做比较

  • nums[i] > target, 说明target可能存在i的左侧
  • nums[i] < target, 说明target可能存在i的右侧
  • nums[i] = target, 则 i 为 target

# 代码

var search = function(nums, target) {
    let left=0,right=nums.length-1;
    while(left<=right){
        let mid =left+ Math.floor((right-left)/2)
        if(nums[mid] === target) return mid
        if(nums[mid]>target) right = mid -1
        else  left = mid+1
    }
    return -1
};

# 参考资料:

  1. 704. 二分查找 (opens new window)
  2. 官方题解 (opens new window)